package ldh.im.fxbase.rpc.service;

import ldh.im.dto.base.OkListResp;
import ldh.im.dto.base.OkResp;
import ldh.im.dto.business.base.*;
import ldh.im.dto.business.item.CollectItemList;
import ldh.im.dto.business.item.FeedbackItemList;
import ldh.im.dto.business.item.LabelInfoItemList;
import ldh.im.dto.business.item.SensitiveWordItemList;
import ldh.rpc.Rpc;
import ldh.rpc.RpcMapper;
import ldh.rpc.exception.RpcException;

import java.util.List;

/**
 * 基础数据接口
 */
@Rpc
public interface RpcBaseService {

    /**
     * 拉取标签信息
     * @param labelPullReq
     * @return
     * @throws RpcException
     */
    @RpcMapper(path="pullLabels")
    LabelInfoItemList pullLabels(LabelPullReq labelPullReq) throws RpcException;

    @RpcMapper(path="pullLabelsResp")
    OkResp pullLabelsResp(OkListResp okListResp) throws RpcException;

    /**
     * 创建标签
     * @param labelCreateReq
     * @return
     */
    @RpcMapper(path="labelCreate")
    OkResp createLabel(LabelCreateReq labelCreateReq);

    /**
     * 删除标签
     * @param deleteReq
     * @return
     */
    @RpcMapper(path="labelDelete")
    OkResp deleteLabel(DelReq deleteReq);

    /**
     * 拉取收藏信息
     * @param collectPullReq
     * @return
     * @throws RpcException
     */
    @RpcMapper(path="pullCollects")
    CollectItemList pullCollects(CollectPullReq collectPullReq) throws RpcException;

    /**
     * 拉取收藏回执
     * @param okListResp
     * @return
     * @throws RpcException
     */
    @RpcMapper(path="pullCollectsResp")
    OkResp pullCollectsResp(OkListResp okListResp) throws RpcException;

    /**
     * 创建收藏
     * @param collectCreateReq
     * @return
     */
    @RpcMapper(path="collectCreate")
    OkListResp createCollect(CollectCreateReq collectCreateReq);

    /**
     * 删除收藏
     * @param deleteReq
     * @return
     */
    @RpcMapper(path="collectDelete")
    OkResp deleteCollect(DelReq deleteReq);

    /**
     * 反馈
     * @param feedbackCreateReq
     * @return
     */
    @RpcMapper(path="feedbackCreate")
    OkResp createFeedback(FeedbackCreateReq feedbackCreateReq);

    /**
     * 拉取反馈信息
     * @param feedbackPullReq
     * @return
     * @throws RpcException
     */
    @RpcMapper(path="pullFeedbacks")
    FeedbackItemList pullFeedbacks(FeedbackPullReq feedbackPullReq) throws RpcException;

    /**
     * 拉取敏感词信息
     * @param sensitiveWordPullReq
     * @return
     * @throws RpcException
     */
    @RpcMapper(path="pullSensitiveWords")
    SensitiveWordItemList pullSensitiveWords(SensitiveWordPullReq sensitiveWordPullReq) throws RpcException;
}
